// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
// import axios from 'axios'
import router from './router'
import ElementUI from 'element-ui'
import Echarts from 'echarts'

// vuex引入
import store from './store'
// import commonApi from ''
Vue.use(ElementUI)
Vue.prototype.$echarts = Echarts
// const debug = process.env.NODE_ENV !== 'production'
// 设置 false以阻止 vue 在启动时生成生产提示
Vue.config.productionTip = false
// 权限问题
// let permission = true
// 谨慎，容易出现死循环的问题
window.sessionStorage['zhangyuhui'] = 'zhangyuhui'
window.localStorage['zhangyuhui'] = 'zhangyuhui'
// localstorage方法
// 存储 localstorage.setItem(key, value)如果key存在，更新value的值
// 获取 locatstorage.getItem(key)如果key不存在返回null
// 删除 localstorage.removeItem(key)，一旦删除，key对应的数据将会全部删除

// router.beforeEach((to, from, next) => {
//   if (permission) {
//     permission = false
//     next({
//       path: '/login'
//     })
//   } else {
//     next()
//   }
// })

// const noCheckPath = ['/500', '/400', '/perfect-info', '/no-mission']
// const noCompanyAllowedPaths = [
//   '/create-team',
//   '/setting',
//   '/perfect-info',
//   '/setting/edit',
//   '/setting/edit-pwd',
// ]
// const permissionMapping = [
//   ['sub-group-page', '/setting/user-group'],
//   ['sub-member-page', '/setting/child-account'],
//   ['system-webhook-add-del', '/setting/webhook']
// ]

// const isPathAllowedWithoutCompany = path => {
//   if (path === '/') {
//     return false
//   }
//   return noCompanyAllowedPaths.includes(path)
// }

// const isPathAllowedWithCompany = (path, mapping, permissions) => {
//   const matchedPermission = mapping.find(p => {
//     return p[1] === path
//   })
//   if (matchedPermission) {
//     // find方法，获取第一个满足条件的数组
//     const permission = permissions.find(p => {
//       return p.module === matchedPermission[0]
//     })
//     if (permission) {
//       return permission.permission
//     }
//     return true
//   }
//   return true
// }

// const checkPermission = (res, path) => {
//   const isNoCompany = res.free
//   if (isNoCompany) {
//     window.localStorage['memberType'] = 2
//   }
//   const permissions = res.permissions
//   let allowed = true

//   if (isNoCompany) {
//     if (!isPathAllowedWithCompany(path)) {
//       allowed = false
//     }
//   } else {
//     if (!isPathAllowedWithCompany(path, permissionMapping, permissions)) {
//       allowed = false
//     }
//   }
//   return {
//     allowed,
//     isNoCompany
//   }
// }

// if (!debug || true) {
//   router.beforeEach((to, from, next) => {
//     if (noCheckPath.indexOf(to.path) !== -1) {
//       next()
//     } else {
//       commonApi.fetchPermissions().then(res => {
//         if (to.path === '/login') {
//           next({path: '/'})
//         } else {
//           // 解构赋值
//           const {allowed: toPathAllowed, isNoCompany} = checkPermission(res, to.path)
//           if (toPathAllowed) {
//             next()
//           } else {
//             const { allowed: fromPathAllowed } = checkPermission(res, to.allowed)
//             if (fromPathAllowed) {
//               if (isNoCompany) {
//                 // 停留在当前页面
//               } else {
//                 next('/no-permission')
//               }
//             } else {
//               if (isNoCompany) {
//                 next(noCompanyAllowedPaths[0])
//               } else {
//                 next('/no-permission')
//               }
//             }
//           }
//         }
//       })
//     }
//   })
//   .catch((errors) => {
//     console.error(errors)
//     const noLoginError = _.find(errors, { code: 1000 })
//     const tokenExpiredError = _.find(errors, { code: 1002 })
//     if (to.path === '/login') {
//       next()
//     } else if (noLoginError || tokenExpiredError) {
//       next({path: '/login'})
//     } else {
//       next({path: '/500'})
//     }
//   })
// }
/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: {
    App
  }
})
